SetOptions[EvaluationNotebook[],CellContext->Notebook]

Curves in 3D

Exmaple: the Helix

r[t_]:={2Cos[t],3Sin[t],t};

Simplify[FrenetSerretSystem[r[t],t],Assumptions->Element[t,Reals]]

helix=ParametricPlot3D[r[t],{t,-4Pi,4Pi},ColorFunction->Function[{x,y,z},RGBColor[1,0,0]],Axes->False]

Manipulate[Show[Graphics3D[{Green,PointSize[0.04],Point[r[t]]}],helix],{t,0,4Pi},SaveDefinitions->True]

A point moving on a elliptical helix.

Tangent Bundle and Osculating Plane

Tangent bundle

tgspace=ParametricPlot3D[r[t]+s r'[t],{t,-4Pi,4Pi},{s,-1,1},Mesh->False,ColorFunction->Function[{x,y,z},Directive[Opacity[0.1],Blue]]]

In the picute above a part of the tangent space

Manipulate[Show[Graphics3D[{Green,PointSize[0.02],Point[r[t]],Line[{r[t]-10r'[t]/Norm[r'[t]],r[t]+10r'[t]/Norm[r'[t]]}]}],helix,PlotRange->{{-5,5},{-5,5},{-16,16}}],{t,-4Pi,4Pi},SaveDefinitions->True]

Manipulate[Show[Graphics3D[{Green,PointSize[0.02],Point[r[t]],Arrow[{r[t],r[t]+r'[t]}]}],helix,tgspace,PlotRange->{{-5,5},{-5,5},{-16,16}}],{t,-4Pi,4Pi},SaveDefinitions->True]

The osculating plane:

The osculating plane to a curve K at a point P is the limit (if it exists) of the planes containing the tangent to K at P and a point Q as Q tends to P.

equation of osculating plane:

(Det[{{x,y,z}-r(t),r'(t),r''(t)}])==0

osculating[t_,r_]:=First[z/.Solve[Det[{{x,y,z}-r[t],r'[t],r''[t]}]==0,z]]

Manipulate[Plot3D[osculating[t,r],{x,-10,10},{y,-10,10}],{t,-4Pi,4Pi},SaveDefinitions->True]

Manipulate[Show[Graphics3D[{Green,PointSize[0.02],Point[r[t]],Line[{r[t]-10r'[t]/Norm[r'[t]],r[t]+10r'[t]/Norm[r'[t]]}]}],helix,Plot3D[osculating[t,r],{x,-10,10},{y,-10,10}],PlotRange->{{-5,5},{-5,5},{-16,16}}],{t,-4Pi,4Pi}]

Tangent, Normal, Binormal vectors

(unit) tangent vector

tg[r_][t_]:=((r'(t))/(Sqrt[r'(t).r'(t)]))

curvature

κ[r_][t_]:=    (Sqrt[(((tg[r])'[t].(tg[r])'[t])/(r'[t].r'[t]))])

κ[r][t]//Simplify

(unit) normal vector

Clear[nr]

nr[r_][t_]:=(((tg(r))'(t))/(Sqrt[(tg(r))'(t).(tg(r))'(t)]))

nr[r][t] // FullSimplify

binormal vector

bi[r_][t_] := Cross[tg[r][t], nr[r][t]]

Manipulate[Show[Graphics3D[{Black,Arrowheads[Small], Arrow[{r[t], r[t] + tg[r][t]}], Brown, Arrow[{r[t], r[t] + nr[r][t]}], Blue, Arrow[{r[t], r[t] + bi[r][t]}]}], helix], {t,-Pi,  Pi}, SaveDefinitions -> True]

Torsion

bi[r]'[t]/ (((Sqrt[r'(t).r'(t)]))nr[r][t])//Simplify

First[bi[r]'[t]]/First[(((Sqrt[r'(t).r'(t)]))nr[r][t])]//Simplify

Another definition of torsion

torsion(r_)(t_):=-(((bi(r))'(t).nr(r)(t))/(Sqrt[r'(t).r'(t)]))

torsion[r][t]//Simplify

r1[t_]:={2Cos[t],2Sin[t],t};

κ[r1][t]//Simplify

torsion[r1][t]//Simplify

FullSimplify[κ[{#,#^2,#^3}&][t]^2,t>0]

FullSimplify[torsion[{#,#^2,#^3}&][t],t>0]

Another definition of the osculating plane

osculatingPlane[t_,r_]:=ParametricPlot3D[Evaluate[r[t]+s tg[r][t]+p bi[r]'[t]],{s,-5,5},{p,-5,5}]

Manipulate[Show[Graphics3D[{Green,PointSize[0.02],Point[r[t]],Line[{r[t]-10r'[t]/Norm[r'[t]],r[t]+10r'[t]/Norm[r'[t]]}]}],helix,osculatingPlane[t,r],PlotRange->{{-5,5},{-5,5},{-16,16}}],{t,0,4Pi},SaveDefinitions->True]

Serret - Frenet Formulas

Assuming[t>0,FullSimplify[(((tg(r))'(t))/(Sqrt[r'(t).r'(t)]))== κ[r][t] nr[r][t] ]]

Simplify[((nr[r]'[t])/(Sqrt[r'(t).r'(t)]))==torsion[r][t] bi[r][t]- κ[r][t]tg[r][t],t>0]

FullSimplify[((bi[r]'[t])/(Sqrt[r'[t].r'[t]]))== -torsion[r][t] nr[r][t],t>0]

The Osculating Circle and The Osculating Sphere

The Osculating Circle

The osculating  circle (or circle of curvature) of a curve C at a point P is a circle in the osculating plane at P that has a three-point contact with C at P.  The radius of the osculating circle (1/κ) is the radius of curvature of the curve at P.

One way to draw the osculating cicle is to start with an ordinary circle at the origin and then translate and rotate it in the the correct position in the osculating plane.

osculatingPlane[t_,r_]:=ParametricPlot3D[Evaluate[r[t]+s tg[t,r]+p bi[r]'[t]],{s,-10,10},{p,-10,10}]

gr=Cases[ParametricPlot3D[1/κ[r][1/2]{Cos[θ],Sin[θ],0},{θ,0,2Pi}],_Line,Infinity][[1]];

(Det[{{x,y,z}-r(t),r'(t),r''(t)}])

Clear[v]

v[t_]:=Last[CoefficientArrays[-2 y Cos[t]-6 t ((Cos[t])^2)+6 z ((Cos[t])^2)+3 x Sin[t]-6 t ((Sin[t])^2)+6 z ((Sin[t])^2),{x,y,z}]//Normal]

Manipulate[Show[Graphics3D[{Green,PointSize[0.02],Point[r[t]]}],helix,Plot3D[osculating[t,r],{x,-20,20},{y,-20,20},Mesh->False,ColorFunction->Function[{x,y,z},Directive[Opacity[0.2],Blue]]],Graphics3D[GeometricTransformation[Cases[ParametricPlot3D[1/κ[r][t]{Cos[θ],Sin[θ],0},{θ,0,2Pi}],_Line,Infinity][[1]],{TranslationTransform[r[t]+1/κ[r][t] nr[r][t]].RotationTransform[{{0,0,1},v[t]}]}]],PlotRange->{{-20,20},{-20,20},{-16,16}}],{t,-4Pi,4Pi},SaveDefinitions->True]

The Osculating Sphere

The osculating sphere at a point at a point on a curve is the the sphere which has a four-point contact with the curve at P. The center of the osculating sphere is called the center of spherical curvature. Its position vector is given by

c(t)=bi(r)(t) σ(r)(t) (ρ(r))'(t)+nr(r)(t) ρ(r)(t)+r(t)

where

σ[r_][t_]:=(1/(torsion[r][t]))

ρ[r_][t_]:=(1/(κ[r][t]))

The radius of spherical curvature is (Sqrt[(((σ(r)(t)))^2) ((((ρ(r))'(t)))^2)+(((ρ(r)(t)))^2)]).

Manipulate[Show[Graphics3D[{Green,PointSize[0.02],Point[r[t]],Yellow,Opacity[0.1],Sphere[r[t]+ρ[r][t] nr[r][t]+ σ[r][t] ρ[r]'[t] bi[r][t],Sqrt[ρ[r][t]^2+((σ[r][t])^2)((ρ[r]'[t])^2)]]}],helix,PlotRange->{{-20,20},{-20,20},{-30,30}}],{t,-4Pi,4Pi},SaveDefinitions->True]

Involutes and Evolutes

involute

An involute of C is a curve which lies on the tangent surfact of C and intersects the generators orthogonally. It’s equation is R=r + (c-s) t

Manipulate[Show[Graphics3D[{Green,PointSize[0.02]}],ParametricPlot3D[r[s]+(c-s) tg[r][s],{s,-4Pi,4Pi}],helix,PlotRange->{{-20,20},{-20,20},{-30,30}}],{{c,1,"parameter"},-2,2},SaveDefinitions->True]

Evolute

The evolute of a curve C is a curve whose invoute is C.

evolute3D[r_][t_]:=r[t]+((nr[r][t])/(κ[r][t]))-(((κ[r])'[t] bi[r][t])/((Sqrt[r'[t].r'[t]]) ((κ[r][t])^2) torsion[r][t]))

h[t_]=FullSimplify[evolute3D[r][t],Assumptions->t>0]

ParametricPlot3D[{h[t],r[t]},{t,0,12Pi},PlotStyle->{Green,Red},Boxed->False,Axes->False]

s[t_]:={Cos[t],Sin[t],2t}

g[t_]=FullSimplify[evolute3D[s][t],Assumptions->t>0]

ParametricPlot3D[{g[t],s[t]},{t,0,12Pi},PlotStyle->{Green,Red},Axes->False]

Built-in function FrenetSerretSystem

?FrenetSerretSystem

sf=Assuming[Element[t,Reals],FullSimplify[FrenetSerretSystem[r[t],t]]]

sf[[1,1]]

κ[r][t]//FullSimplify

sf[[1,2]]

torsion[r][t]//Simplify

sf[[2,1]]

tg[r][t]//Simplify

sf[[2,2]]

Assuming[Element[t,Reals], FullSimplify[nr[r][t] ]]

sf[[2,3]]

Assuming[Element[t,Reals],FullSimplify[bi[r][t]]]